<?php

/**
 * Carregamento automatico de classes do sistema
 * @param String nome da classe
 */
function __autoload($sClass) {
    static $sDirBase;
    if (!isset($sDirBase)) {
        $sDirBase = str_replace('\\', '/', dirname(dirname(__FILE__))).'/';        
    }
    if (substr($sClass, 0, 10) == 'Controller') {
        require_once $sDirBase.'include/controller/' . $sClass . '.inc';        
    }
    else if (substr($sClass, 0, 4) == 'View') {
        require_once $sDirBase.'include/view/' . $sClass . '.inc';        
    }
    else if (substr($sClass, 0, 5) == 'Model') {
        require_once $sDirBase.'include/model/' . $sClass . '.inc';        
    }
    else if (substr($sClass, 0, 12) == 'Persistencia') {
        require_once $sDirBase.'include/persistencia/' . $sClass . '.inc';        
    } 
    else {
        require_once $sDirBase.'estrutura/' . $sClass . '.inc';        
    }
}

function toJson($sValor) {
    if (is_object($sValor)) {
        foreach ($sValor as $sChave => $xValor) {
            $sValor->$sChave = utf8_encode($xValor);
        }
    }
    else if (is_array($sValor)) {
        foreach ($sValor as $sChave => $xValor) {
            $sValor[$sChave] = utf8_encode($xValor);
        }
    }  
    else if (is_string($sValor)) {
        $sValor = utf8_encode($sValor);
    }     
    return json_encode($sValor);
}

function callMethod($oObjeto, $sMetodo, array $aArgumentos=array()) {
    return call_user_func_array(array($oObjeto, $sMetodo), $aArgumentos);
}

function callGetter($oObjeto, $sPropriedade) {
    $sMetodo = 'get'.$sPropriedade;
    return callMethod($oObjeto, $sMetodo);
}

function callSetter($oObjeto, $sPropriedade, $aArgumentos) {
    $sMetodo = 'set'.$sPropriedade;
    if (!is_array($aArgumentos)) {
        $aArgumentos = array($aArgumentos);
    }
    return callMethod($oObjeto, $sMetodo, $aArgumentos);
}